﻿using Dao;
using Interface.BO;
using Interface.DAO;
using JMI_Nucleo.JMIProvider;
using OR;
using System.Collections.Generic;
using System.Data.Common;

namespace BO
{
    public class Endereco : IEndereco
    {
        IEnderecoDao<mEndereco> dao;
         
        public Endereco()
        {
            dao = DaoFactory<EnderecoDao>.Create();
        }

        public List<mEndereco> GetLista(int Indice, short Empresa)
        {
            List<mEndereco> lstEndereco;

            try
            {
                EngineBD.Conectar();
                lstEndereco = dao.GetListEndereco(Indice, Empresa);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return lstEndereco;
        }

        public bool Salvar(mEndereco infoEndereco, char Acao, int Indice, short Empresa)
        {
            bool retorno = false;
            DbTransaction trans;
            try
            {
                EngineBD.Conectar();
                trans = EngineBD.IniciaTransacao();
                if (Acao == 'I')
                  retorno = dao.Inserir(infoEndereco);
                else if (Acao == 'A')
                  retorno = dao.Alterar(infoEndereco, Indice, Empresa);
                EngineBD.FinalizaTransacao(trans, retorno);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }
        public bool Excluir(int Indice, short Empresa)
        {
            bool retorno = false;
            DbTransaction trans;
            try
            {
                EngineBD.Conectar();
                trans = EngineBD.IniciaTransacao();
                retorno = dao.Excluir(Indice, Empresa);
                EngineBD.FinalizaTransacao(trans, retorno);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return retorno;
        }

        public mEndereco GetEndereco(int Indice, short Empresa)
        {
            mEndereco _mEndereco;

            try
            {
                EngineBD.Conectar();
                _mEndereco = dao.GetEndereco(Indice, Empresa);
            }
            finally
            {
                EngineBD.Desconectar();
            }
            return _mEndereco;
        }
    }
}
